package cn.edu.lingnan.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import javax.persistence.*;
import java.awt.geom.FlatteningPathIterator;
import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity     //指定当前类是一个实体类
@Table      //指定实体类和表之间的对应关系
public class Book implements Serializable {


    /**
     * GenerationType.AUTO: 有程序自动选择一种策略
     * GenerationType.IDENTITY: 自增，底层数据库必须支持自增操作（mysql)
     * GenerationType.SEQUENCE: 序列，底层数据库必须支持序列（oracle）
     * GenerationType.TABLE: jpa提供的一种策略，通过生成一张表的方式来完成自增操作
     * 总结：
     *      在主键生成策略中，在mysql数据库综auto和identity用的较多，二者IDentity
     */

    /**
     * @GenericGenerator(name = "idGenerator",strategy = "uuid")  作用（自定义主键生成策略）
     * @GenerateValue(generator = "idGenerator")    generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称。
     * private String strID; 主键==> Mysql 字符串类型的主键生成策略
     */

    /**
     * Colunm 注解配置
     * name: 指定数据库标字段名称
     * unique: 是否唯一
     * nullable: 是否为空
     * length: 长度
     */


    @Id //指定当前字段是主键
    @GeneratedValue(strategy = GenerationType.TABLE) //指定逐渐的生成方式, stratege：指定主键生成策略
    private int id;
    @Column(name = "name",  nullable = false, length = 20)
    private String name;
    @Column(name = "author", nullable = false, length = 20)
    private String author;
    @Column(name = "price", nullable = false, length = 10)
    private double price;

    private Integer sales;
    private Integer stocks;
    @Column(name = "imgPath", nullable = false, length = 20)
    private String imgPath;
    @Column(name = "createTime", nullable = true, length = 18)
    private String createTime;


}
